home *** CD-ROM | disk | FTP | other *** search
- """Test cases for traceback module"""
-
- import unittest
- from test_support import run_unittest
-
- import traceback
-
- class TracebackCases(unittest.TestCase):
- # For now, a very minimal set of tests. I want to be sure that
- # formatting of SyntaxErrors works based on changes for 2.1.
-
- def get_exception_format(self, func, exc):
- try:
- func()
- except exc, value:
- return traceback.format_exception_only(exc, value)
- else:
- raise ValueError, "call did not raise exception"
-
- def syntax_error_with_caret(self):
- compile("def fact(x):\n\treturn x!\n", "?", "exec")
-
- def syntax_error_without_caret(self):
- # XXX why doesn't compile raise the same traceback?
- import badsyntax_nocaret
-
- def test_caret(self):
- err = self.get_exception_format(self.syntax_error_with_caret,
- SyntaxError)
- self.assert_(len(err) == 4)
- self.assert_("^" in err[2]) # third line has caret
- self.assert_(err[1].strip() == "return x!")
-
- def test_nocaret(self):
- err = self.get_exception_format(self.syntax_error_without_caret,
- SyntaxError)
- self.assert_(len(err) == 3)
- self.assert_(err[1].strip() == "[x for x in x] = x")
-
-
- def test_main():
- run_unittest(TracebackCases)
-
-
- if __name__ == "__main__":
- test_main()
-